import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
		 //loading的配置
     loadingConfig:{
       isShowLoading:false,
       title:"正在加载"
     },
		 //底部菜单的配置
     actionSheetConfig:{
       //是否显示actionSheet
       isShowActionSheet:false,
       //菜单选项
       itemList:[],
       //这个回调函数指的就是当你点击某一项以后去进行的操作
       callBack:null
     },
		 //预览图片的配置
		 previewImageConfig:{
			 isShowPreviewImage:false,
			 urls:[],   //代表所有要预览的图片集合
			 current:""
		 }
  },
  mutations: {
    changeLoadingConfig(state,arg){
      state.loadingConfig=arg;
    },
    showActionSheet(state,config){
      if(config&&config.itemList&&config.itemList.length>0){
        state.actionSheetConfig.itemList=config.itemList;
        state.actionSheetConfig.isShowActionSheet=true;
      }
      else{
        throw new Error("itemList不能为空，必须是一个数组");
      }
      if(config&&config.success&&typeof config.success=="function"){
        state.actionSheetConfig.callBack=config.success;
        //把回调方法赋值进去 
      }
      
    },
    hideActionSheet(state){
      state.actionSheetConfig.isShowActionSheet=false;
			
    },
		//------------------预览图片--------------------
		showPreviewImage(state,config){
			state.previewImageConfig.isShowPreviewImage=true;
			if(config&&config.urls&&config.urls.length>0){
				//说明要预览的数组它不是空的
				state.previewImageConfig.urls=config.urls;
			}
			if(config&&config.current){
				state.previewImageConfig.current=config.current;
			}
		},
		hidePreviewImage(state){
			state.previewImageConfig.isShowPreviewImage=false;
			state.previewImageConfig.urls=[];
			state.previewImageConfig.current="";
		}
  },
  actions: {
    //显示
    showLoading({commit},title){
      if(title&&title.length>5){
        commit("changeLoadingConfig",{isShowLoading:true,title:""});
        throw new Error("loading的文字最多只能有5个");
      }
      commit("changeLoadingConfig",{isShowLoading:true,title:title});
    },
    //隐藏
    hideLoading({commit}){
      commit("changeLoadingConfig",{isShowLoading:false,title:"正在加载"});
    },
    //显示
    showActionSheet({commit},config){
      commit("showActionSheet",config);
    },
    //隐藏
    hideActionSheet({commit}){
      commit("hideActionSheet");
    },
		//------------------预览图片--------------------
		showPreviewImage({commit},config){
			commit("showPreviewImage",config);
		},
		hidePreviewImage({commit}){
			commit("hidePreviewImage");
		}
  },
  //方便获取值
  getters:{
    //是否显示加载 
    isShowLoading(state){
      return state.loadingConfig.isShowLoading;
    },
    //加载当中的文字
    loadingText(state){
      return state.loadingConfig.title;
    },
    //是否显示底部操作菜单
    isShowActionSheet(state){
      return state.actionSheetConfig.isShowActionSheet;
    },
    actionSheetItemList(state){
      return state.actionSheetConfig.itemList;
    },
    actionSheetCallBack(state){
      return state.actionSheetConfig.callBack;
    },
		//------------预览图片-----------
		isShowPreviewImage(state){
			return state.previewImageConfig.isShowPreviewImage;
		},
		//所有要预览的图片地址数组
		previewImageUrls(state){
			return state.previewImageConfig.urls;
		},
		//当前要预览的图片
		currentPriviewImage(state){
			return state.previewImageConfig.current;
		}
  }
})
